package com.titaniume.java1;

import com.titaniume.java.Person;
import org.junit.Test;

import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;

/**
 *@program: JavaSenior
 *@description:
 *@author: renfei.huang
 *@create: 2021-10-12 14:03
 */
public class TreeSetTest {


    /**
     *
     * 1.TreeSet中添加的数据，要求是相通类的对象
     * 2.两种排序方式：自然排序(实现Comparable接口) 和定制排序
     *
     * 3.自然排序中 比较两个对象是否相同的标准 ，compareTo()返回0，不在是equals()
     * 4.定制排序中 比较两个对象是否相等的标准为 compareTo() 返回0，不在是equals()
     */
    @Test
    public void test1(){

        TreeSet set = new TreeSet();

        // 失败： 不能添加 不同类的对象
//        set.add(123);
//        set.add(456);
//        set.add(new Person("xxx",123));
//        set.add("测试");

        //举例一：
//        set.add(123);
//        set.add(-3);
//        set.add(454);
//        set.add(77);
//        set.add(88);

        set.add(new User("xxx",18));
        set.add(new User("tom",65));
        set.add(new User("jerry",25));
        set.add(new User("mike",46));
        set.add(new User("Usd",58));
        set.add(new User("Usd",23));



        Iterator iterator = set.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }

    @Test
    public void  test2(){

        Comparator comparator = new Comparator() {
            //按照年龄从小到大排序
            @Override
            public int compare(Object o1, Object o2) {
                if(o1 instanceof  User && o2 instanceof  User){
                    User u1 = (User) o1;
                    User u2 = (User) o2;
                   return Integer.compare(u1.getAge(),u2.getAge());
                }else {
                    throw new RuntimeException("输入数据类型不匹配");
                }
            }
        };

        TreeSet set = new TreeSet(comparator);
        set.add(new User("xxx",18));
        set.add(new User("tom",65));
        set.add(new User("jerry",25));
        set.add(new User("mike",46));
        set.add(new User("mike1",46));
        set.add(new User("Usd",58));
        set.add(new User("Usd",23));


        Iterator iterator = set.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }

    }
}
